package com.itheima.tlias84.config;

import com.itheima.tlias84.interceptor.LoginInterceptor;
import jakarta.annotation.Resource;
import org.hibernate.validator.constraints.Range;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * spring配置类 ： 一般用来配置拦截器 ， 跨域配置etc
 * @Configuration : 是配置类的特化注解 组合了@Component
 *
 * 过滤器（Filter） 与  拦截器（Interceptor）的区别 :
 * 相同点 : 执行都在controller（servlet）之前
 * 不同点 :
 *        技术提供方 ： 过滤器 -》 servlet   拦截器  -》 spring
 *        执行顺序 ： 先执行过滤器，后执行拦截器
 *        拦截粒度 ： 过滤器过滤粒度粗    -》 编码转换，时间格式转换
 *                  拦截器拦截粒度细    -》 登录认证以及日志记录
 *
 * 如果继承 extends WebMvcConfigurationSupport springboot会自己处理时间对于LocalDate类型时间格式会变化
 * 如果想要使用自定义的时间格式 就实现  WebMvcConfigurer
 */
//@Configuration
//public class WebMvcConfig extends WebMvcConfigurationSupport {
public class WebMvcConfig implements WebMvcConfigurer {

    @Resource
    LoginInterceptor loginInterceptor;
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //添加拦截器
        registry.addInterceptor(loginInterceptor)
                //添加拦截路径
                .addPathPatterns("/**")
                //排除登录路径
                .excludePathPatterns("/login")
                .excludePathPatterns("/yml","/a");

    }
}
